package org.lanqiao.tjut.dao;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.lanqiao.tjut.bean.UsersBean;
import org.lanqiao.tjut.db.DBDriverFactory;

public class UserInfoManagerDao {

	/**
	 * 保存用户信息
	 * 
	 * @param usersB
	 *            用户信息对象
	 * @return 保存结果的记录行数
	 */
	public int saveUserInfo(UsersBean usersB) {
		int re_i = 0;
		// 执行的sql语句
		String strSql = "";
		// sql语句的参数
		Object[] params = null;
		if (usersB.getUserid() == null) {
			// 新增处理
			strSql = "INSERT INTO EDUUSERS(USERNAME ,USERPSW,USERAGE ,USERSEX ,USERTEL,USERADDRESS) VALUES(?,?,?,?,?,?)";
			params = new Object[] { usersB.getUsername(), usersB.getUserpsw(), usersB.getUserage(), usersB.getUsersex(),
					usersB.getUsertel(), usersB.getUseraddress() };
		} else {
			// 修改处理
			strSql = "UPDATE EDUUSERS SET USERNAME=? ,USERPSW=?,USERAGE=? ,USERSEX=? ,USERTEL=?,USERADDRESS=? WHERE USERID=?";
			params = new Object[] { usersB.getUsername(), usersB.getUserpsw(), usersB.getUserage(), usersB.getUsersex(),
					usersB.getUsertel(), usersB.getUseraddress(), usersB.getUserid() };
		}
		// 保存数据
		re_i = DBDriverFactory.getDBDriverInstance().update(strSql, params);
		return re_i;
	}

	/**
	 * 获取所有的用户信息
	 * 
	 * @return 用户信息集
	 */
	public List<UsersBean> getAllUsersInfo() {
		// 查询数据库的sql语句
		String strSql = "SELECT * FROM EDUUSERS ORDER BY USERID DESC";
		List<UsersBean> lstUsers = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanListHandler<UsersBean>(UsersBean.class));
		return lstUsers;
	}

	/**
	 * 通过id主键获取用户信息
	 * 
	 * @param strUid
	 *            id主键
	 * @return 用户信息
	 */
	public UsersBean getUserInfoById(String strUid) {
		// 查询数据
		// 查询数据库的sql语句
		String strSql = "SELECT * FROM EDUUSERS WHERE USERID=?";
		UsersBean UsersB = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanHandler<UsersBean>(UsersBean.class), new Object[] { strUid });
		return UsersB;
	}

	/**
	 * 根据条件进行用户信息查询
	 * 
	 * @param usersB
	 *            查询条件
	 * @return 查询结果集
	 */
	public List<UsersBean> doQueryByParas(UsersBean usersB) {
		// 根据条件进行数据查询，没有输入查询条件，则进行全部查询
		StringBuilder sbSql = new StringBuilder("SELECT * FROM EDUUSERS WHERE 1=1 ");
		// 根据查询条件动态拼写查询语句和参数
		List<Object> lstParas = new ArrayList<Object>();
		if (usersB.getUsername() != null && !usersB.getUsername().trim().equals("")) {
			// 姓名查询
			sbSql.append(" AND USERNAME LIKE ? ");
			// 添加参数
			lstParas.add("%%" + usersB.getUsername() + "%%");
		}

		if (usersB.getUsersex() != null && !usersB.getUsersex().trim().equals("")) {
			// 姓名查询
			sbSql.append(" AND USERSEX = ? ");
			// 添加参数
			lstParas.add(usersB.getUsersex());
		}

		if (usersB.getUserage() > 0) {
			// 姓名查询
			sbSql.append(" AND USERAGE >= ? ");
			// 添加参数
			lstParas.add(usersB.getUserage());
		}

		if (usersB.getUserage2() > 0) {
			// 姓名查询
			sbSql.append(" AND USERAGE <= ? ");
			// 添加参数
			lstParas.add(usersB.getUserage2());
		}

		/*
		 * if (usersB.getUsername() != null &&
		 * !usersB.getUsername().trim().equals("")) { // 姓名查询
		 * sbSql.append(" AND USERNAME LIKE ? "); // 添加参数 lstParas.add("%%" +
		 * usersB.getUsername() + "%%"); }
		 */

		// 进行排序
		sbSql.append("  ORDER BY USERID ");

		// 进行查询操作
		List<UsersBean> lstUsers = DBDriverFactory.getDBDriverInstance().query(sbSql.toString(),
				new BeanListHandler<UsersBean>(UsersBean.class), lstParas.toArray());
		return lstUsers;
	}

	/**
	 * 删除指定id的用户信息
	 * 
	 * @param userId
	 *            用户id
	 * @return 删除结果集数目
	 */
	public int deleteUserById(int userId) {
		int re_i = 0;
		// 执行的sql语句
		String strSql = "DELETE FROM EDUUSERS WHERE USERID=?";
		// 删除数据
		re_i = DBDriverFactory.getDBDriverInstance().update(strSql, new Object[] { userId });
		return re_i;
	}

}
